﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

using SIGERP_Entidades;
using SIGERP_Negocio;

namespace SIGERP_Presentacion
{
    public partial class frmTipoDerivacion : frmABM
    {

        List<TipoDerivacion> derivaciones;
        DataTable dt;        
        
        public frmTipoDerivacion()
        {
            base.escribeLabels("Tipo Derivación");
            base.CargarGrilla();
        }

        public override void CargarGrilla()
        {

            dt = new DataTable();
            dt.Columns.Add("Id", typeof(int));
            dt.Columns.Add("Tipo de derivacion", typeof(string));
            dt.Columns.Add("Habilitado", typeof(bool));
            dt.Columns.Add("Es rechazo", typeof(bool));

            derivaciones = TiposDerivaciones.buscarTiposDerivacion();
            foreach (TipoDerivacion td in derivaciones)
                if(td.id!=0)dt.Rows.Add(td.id,td.descripcion,td.habilitado,td.es_rechazo);

            base.Grilla.DataSource = dt;
            base.Grilla.Columns[0].Visible = false;
            Grilla.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
        }

        public override void busqueda()
        {
            dt.Clear();

            foreach (TipoDerivacion td in derivaciones)
            {

                if (td.descripcion.ToUpper().StartsWith(txtBusqueda.Text.ToUpper()))
                    if (td.id != 0) dt.Rows.Add(td.id, td.descripcion, td.habilitado);
            }
            
            Grilla.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;

            //SINO ENCUENTRA RESULTADOS MUESTRO LA LEYENDA PARA INGRESAR NUEVO

            if (dt.Rows.Count == 0) base.lblNoSeEncontro.Text = "Ingresar nuevo tipo de derivación";
            else base.lblNoSeEncontro.Text = "";
        }

        public override void agregar()
        {
            frmTipoDerivacionAgregar frm = new frmTipoDerivacionAgregar();
            frm.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
            DialogResult opc = frm.ShowDialog();
            frm.Dispose();
            if (opc == DialogResult.OK)
            CargarGrilla();
        }

        public override void eliminar()
        {
            if (base.Grilla.SelectedRows.Count == 1)
            {
                if (MessageBox.Show("¿Desea dar de baja el tipo de derivacion seleccionado?", Text, MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                {
                    TipoDerivacion td = TiposDerivaciones.buscarTipoDerivacion(Convert.ToInt32(base.Grilla.SelectedRows[0].Cells["Id"].Value));
                    if (!TiposDerivaciones.validarSiHayDerivacionesAsociadas(td))
                    {
                        TiposDerivaciones.borrar(td);
                        CargarGrilla();
                    }
                    else
                    {
                        if (td.habilitado)
                        {
                            if (MessageBox.Show("El Tipo de Derivacion posee Derivaciones asociadas, no puede ser eliminada, ¿Desea deshabilitarla?", Text, MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                            {
                                TiposDerivaciones.deshabilitarTipoDerivacion(td);
                                CargarGrilla();
                            }
                        }
                        else
                        {
                            MessageBox.Show("El Tipo de Derivacion posee Derivaciones asociadas, no puede ser eliminada", Text, MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1);
                        }
                    }
                }
            }
        }

        public override void editar(int row, int column)
        {
            if (row == base.Grilla.SelectedRows[0].Index)
            {

                    int id = Convert.ToInt32(base.Grilla.SelectedRows[0].Cells["Id"].Value);
                    TipoDerivacion tdSelec=null;
                foreach (TipoDerivacion td in derivaciones)
                    if (td.id == id) tdSelec=td;
                if (tdSelec!=null)
                {
                frmTipoDerivacionActualizar frm = new frmTipoDerivacionActualizar(tdSelec);
                frm.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
                    DialogResult opc = frm.ShowDialog();
                    if(opc==DialogResult.OK)
                    CargarGrilla();
                }
            }
        }

        public override void enterEnTextBox()
        {
            if (dt.Rows.Count == 0)
            {
                frmTipoDerivacionAgregar frm = new frmTipoDerivacionAgregar(txtBusqueda.Text.ToUpper());
                frm.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
                frm.ShowDialog();
                DialogResult opc = frm.ShowDialog();
                if (opc == DialogResult.OK)
                CargarGrilla();
                busqueda();
            }
        }

        private void InitializeComponent()
        {
            this.HelpProviderHG = new System.Windows.Forms.HelpProvider();
            this.SuspendLayout();
            // 
            // HelpProviderHG
            // 
            this.HelpProviderHG.HelpNamespace = "/SIGERP_AYUDA.chm";
            // 
            // frmTipoDerivacion
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.ClientSize = new System.Drawing.Size(592, 416);
            this.HelpProviderHG.SetHelpKeyword(this, "frmTipoDerivacion_1.htm");
            this.HelpProviderHG.SetHelpNavigator(this, System.Windows.Forms.HelpNavigator.Topic);
            this.Name = "frmTipoDerivacion";
            this.HelpProviderHG.SetShowHelp(this, true);
            this.ResumeLayout(false);
            this.PerformLayout();

        }
    }
}
